/*
 * @Author: your name
 * @Date: 2021-08-03 15:32:19
 * @LastEditTime: 2021-08-17 18:08:10
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \Self\hrsaas-86\src\store\modules\user.js
 */
// 自己写
// import { setStorageToken } from '@/utils/storage'
import { setToken, getToken, removeToken } from '@/utils/auth'
import { UserLogin, getUserInfo, getuserImgById } from '@/api/user'

const state = {
  token: getToken() || '',

  UserInfo: {}
}
const mutations = {
  setToken(state, payload) {
    state.token = payload

    // 这里可以用Cookies存储
    // setStorageToken(payload)

    // 将token持久化存储在cooki中
    setToken(payload)
  },
  // 设置用户个人信息
  setUserInfo(state, payload) {
    state.UserInfo = payload
  },
  // 清除用户信息
  removeUserInfo(state) {
    state.UserInfo = ''
  },
  // 清除用户token
  removeToken(state) {
    state.token = ''
    // 删除本地token
    removeToken()
  }
}
const actions = {
  async Actions_setToken(context, payload) {
    const res = await UserLogin(payload)
    context.commit('setToken', res.data)
    // 这个return是为了让login.vue组件中能 接收到这个函数的返回值 ==>弹框提示

    return res
  },
  async Actions_getUserInfo(context) {
    /* 自己的少解构一层 */
    // const res = await getUserInfo() // 员工信息,只有几个字段
    // console.log(1111111111, res)
    // const res2 = await getuserImgById(res.data.userId) // 员工的详细信息  包含第一个的结果
    // console.log(2222222, res2)
    // const result = { ...res, ...res2 }
    /* 老师的 */
    // 利用解构重命名
    const { data: data1 } = await getUserInfo() // 员工信息,只有几个字段
    const { data: data2 } = await getuserImgById(data1.userId) // 员工的详细信息  包含第一个的结果
    const result = { ...data1, ...data2 }
    context.commit('setUserInfo', result)
    // console.log(res)
    // console.log(res2);
    return result
  },
  // 利用actions删除本地数据和token
  Actions_removesome(context) {
    context.commit('removeUserInfo')
    context.commit('removeToken')
  }
}
export default {
  // 开启命名空间
  namespaced: true,
  state,
  mutations,
  actions
}
